#! /usr/bin/env python
# coding=utf-8
# 对一个装有 rsem-calculate-expression .gene.results的路径 
# 读取每个.gene.results 中每个基因的表达量 将其作为一个一个表格 第一列为 基因名称 第二行为 一个json {样品:FPKM}

import os
import json


import argparse
import sys
from argparse import RawTextHelpFormatter


parser = argparse.ArgumentParser(
    description='''
    将 rsem-calculate-expression 运行的每个样品的结果(SampleX.gene.results) 
    放到一个文件 生成一个表格 第一列为 基因名字 第二列为 各个样品的表达量的json

    用法:
    read_rpkm_from_all_sample.py -i all_sample_result -o gene_exp.tsv
    ''',formatter_class=RawTextHelpFormatter)



parser.add_argument('-i',
                help='必须给定，输入的包含 SampleX.gene.results 的路径 ')



parser.add_argument('-o',
                help='输出的tsv文件')


args = parser.parse_args()

if not args.i or not args.o:
    parser.print_help()
    sys.exit()

infile = args.i
outfile  = args.o


gene_dic = {}

for i in os.listdir(infile):
	t = i.split('.genes.results')

	if len(t)>1:
		sample_name = t[0]
		inpath = infile+'/'+i
		with open(inpath) as fila:
			next(fila)
			for j in fila:
				k = j.split('\t')
				if len(k)>5:
					gene_name = k[0]
					gene_fpkm = k[6]

					if gene_name not in gene_dic:
						gene_dic[gene_name] = {}
					gene_dic[gene_name][sample_name] = str(float(gene_fpkm))

with open(outfile,'w') as fila:
	for g in gene_dic:
		fila.write(g+'\t'+json.dumps(gene_dic[g])+'\n')

